package api

import (
	"fmt"
	"unsafe"
)

var (
	name    string
	surName string
)

func init() {
	fmt.Println("api模块初始化init函数……")
	result := api()
	fmt.Printf("我是：%v\n", result)
	fmt.Println("api初始化完成！")
}

func api() string {
	name = "venki"
	surName = "chen"

	return name + "." + surName
}

func Welcome() {
	fmt.Println("欢迎来到今日学习……")
}

// IntType 基本数据类型之整型
func IntType() {
	// 查看数据类型
	var n1 = 100
	fmt.Printf("n1的数据类型是，%T\n", n1)

	// 查看变量占用字节大小
	var n2 int64 = 10
	fmt.Printf("n2的数据类型是：%T，n2占用的字节数是：%d", n1, unsafe.Sizeof(n2))
}

// FloatType 基本数据类型值浮点型
func FloatType() {
	// 单精度和双精度只是表示数据范围不一样
	var price float32 = 89.32
	fmt.Printf("价格是：%v\n", price)
	fmt.Println("-----------")
	var num1 float32 = -123.00000901
	var num2 float64 = -123.00000901
	fmt.Printf("num1的值是：%v\n", num1)
	fmt.Printf("num2的值是：%v\n", num2)
	fmt.Println("-----------")
}

// CharType 基本数据类型之字符数据类型
func CharType() {
	var c1 byte = 'a'
	var c2 byte = '0'
	// 直接输出对应的是字符的码值
	fmt.Printf("c1的值：%v，c2的值：%v\n", c1, c2)
	fmt.Println("--------------")
	fmt.Printf("c1的值：%c,c2的值：%c\n", c1, c2)

	// 超过byte存储的范围不行（0-255）
	// var c3 byte = '陈' // 38472
	var c3 int = '陈' // 38472
	fmt.Printf("c3的值：%c", c3)
}
